package main

import "fmt"

func main()  {

	// append
	s1 := []string{"深圳", "上海", "北京"}

	fmt.Printf("s1=%v len(s1)=%d cap(s1)=%d\n", s1, len(s1), cap(s1))
	// result s1=[深圳 上海 北京] len(s1)=3 cap(s1)=3

	// 调用append 必须由原来的变量去接受，节省地址，个人理解是把原来的空间释放，开辟一个新的内存空间
	s1 = append(s1, "杭州")
	fmt.Printf("s1=%v len(s1)=%d cap(s1)=%d\n", s1, len(s1), cap(s1))


	s1 = append(s1, "杭州")
	fmt.Printf("s1=%v len(s1)=%d cap(s1)=%d\n", s1, len(s1), cap(s1))

	//新的cap大于旧的cap时，使用新的
	//append追加元素，原来底层数组放不下的时候，go底层就会把数组换一个
	// 大小小于1024时，容量增大一倍，大于1024时，容量1/4增大

	s2 := []string{"武汉", "西安", "广州"}
	s1 = append(s1, s2...)   ///...拆开切片
	fmt.Printf("s1=%v len(s1)=%d cap(s1)=%d\n", s1, len(s1), cap(s1))




}